//package com.inspur.edp.cef.generator.coreGenerator.base.entitygen.resourceinfo;
//
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.item.ClassGeneratorContext;
//import com.inspur.edp.cef.rtgenerator.managergen.ManagerGeneratorContext;
//import com.inspur.edp.cef.rtgenerator.repositorygen.RepositoryGenUtil;
//import com.inspur.edp.cef.spi.entity.AbstractPropertyInfo;
//import com.inspur.edp.cef.spi.entity.AssociationInfo;
//import com.inspur.edp.cef.spi.entity.info.AbstractDataTypeInfo;
//import com.inspur.edp.cef.spi.entity.info.AbstractRefPropInfo;
//import com.inspur.edp.cef.spi.entity.info.EnumValueInfo;
//import lombok.var;
//
//public abstract class DataTypeResInfoGenCtx extends ClassGeneratorContext {
//
//  private java.lang.Class entityInfoType;
//  private AbstractDataTypeInfo dataTypeInfo;
//  private java.util.HashMap<String, AbstractPropertyInfo> propInfos;
//  private java.util.HashMap<String, java.util.HashMap<String, EnumValueInfo>> propInfoEnumInfos;
//  private java.util.HashMap<String, java.util.HashMap<String, TypeInfo>> propInfoEnumInfoTypes;
//  private java.util.HashMap<String, java.util.HashMap<String, AbstractRefPropInfo>> propInfoRefPropInfos;
//  /**
//   * 国际化实体层EntityResourceInfo
//   */
//  private TypeInfo privateDataTypeResourceInfoType;
//  private ManagerGeneratorContext privateParentContext;
//
//  public DataTypeResInfoGenCtx(java.lang.Class entityInfoType,
//      ManagerGeneratorContext parentContext) {
//    this.privateParentContext = parentContext;
//    this.entityInfoType = entityInfoType;
//  }
//
//  public final TypeInfo getDataTypeResourceInfoType() {
//    return privateDataTypeResourceInfoType;
//  }
//
//  public final void setDataTypeResourceInfoType(TypeInfo value) {
//    privateDataTypeResourceInfoType = value;
//  }
//
//  public final ManagerGeneratorContext getParentContext() {
//    return privateParentContext;
//  }
//
//  /**
//   * 设计时实体信息
//   */
//  public AbstractDataTypeInfo getDataTypeInfo() {
//    if (dataTypeInfo == null) {
//      dataTypeInfo = (AbstractDataTypeInfo) RepositoryGenUtil.createInstanceByClass(entityInfoType);
//    }
//    return dataTypeInfo;
//  }
//
//  /**
//   * 属性信息
//   */
//  public final java.util.HashMap<String, AbstractPropertyInfo> getPropInfos() {
//    if (propInfos == null) {
//      propInfos = new java.util.HashMap<String, AbstractPropertyInfo>();
//      if (getDataTypeInfo() != null && getDataTypeInfo().getProptyInfoTypes().size() > 0) {
//
//        getDataTypeInfo().getProptyInfoTypes().entrySet().stream()
//            .forEach(item -> propInfos.put(item.getKey(),
//                (AbstractPropertyInfo) RepositoryGenUtil.createInstanceByClass(item.getValue())));
//      }
//    }
//    return propInfos;
//  }
//
//  /**
//   * 带出属性信息
//   */
//  public final java.util.HashMap<String, java.util.HashMap<String, AbstractRefPropInfo>> getPropRefPropInfos() {
//    if (propInfoRefPropInfos == null) {
//      propInfoRefPropInfos = new java.util.HashMap<String, java.util.HashMap<String, AbstractRefPropInfo>>();
//      if (getPropInfos() != null && getPropInfos().size() > 0) {
//        getPropInfos().entrySet().stream().forEach(item ->
//        {
//          propInfoRefPropInfos.put(item.getKey(), buildPropRefPropDic(item.getValue()));
//        });
//      }
//    }
//    return propInfoRefPropInfos;
//  }
//
//  /**
//   * 属性枚举信息
//   */
//  public final java.util.HashMap<String, java.util.HashMap<String, EnumValueInfo>> getPropEnumInfos() {
//    if (propInfoEnumInfos == null) {
//      propInfoEnumInfos = new java.util.HashMap<String, java.util.HashMap<String, EnumValueInfo>>();
//      if (getPropInfos() != null && getPropInfos().size() > 0) {
//        getPropInfos().entrySet().stream().forEach(item ->
//        {
//          if (item.getValue().getIsEnum()) {
//            propInfoEnumInfos.put(item.getKey(), buildPropEnumDic(item.getValue()));
//          }
//        });
//      }
//    }
//    return propInfoEnumInfos;
//  }
//
//  /**
//   * 属性枚举信息的类型字典
//   */
//  public final java.util.HashMap<String, java.util.HashMap<String, TypeInfo>> getPropEnumInfoTypes() {
//    if (propInfoEnumInfoTypes == null) {
//      propInfoEnumInfoTypes = new java.util.HashMap<String, java.util.HashMap<String, TypeInfo>>();
//      if (getPropInfos() != null && getPropInfos().size() > 0) {
//        getPropInfos().entrySet().stream().forEach(item ->
//        {
//          if (item.getValue().getIsEnum()) {
//            propInfoEnumInfoTypes.put(item.getKey(), buildPropEnumInfoTypeDic(item.getValue()));
//          }
//
//        });
//      }
//    }
//    return propInfoEnumInfoTypes;
//  }
//
//
//  ///#region 私有方法
//  private java.util.HashMap<String, EnumValueInfo> buildPropEnumDic(AbstractPropertyInfo propInfo) {
//    java.util.HashMap<String, EnumValueInfo> dic = new java.util.HashMap<String, EnumValueInfo>();
//    if (propInfo.getEnumValueInfos() != null && propInfo.getEnumValueInfos().size() > 0) {
//
//      propInfo.getEnumValueInfos().entrySet().stream().forEach(item -> {
//        dic.put(item.getKey(),
//            (EnumValueInfo) RepositoryGenUtil.createInstanceByClass(item.getValue()));
//      });
//    }
//    return dic;
//  }
//
//  private java.util.HashMap<String, TypeInfo> buildPropEnumInfoTypeDic(
//      AbstractPropertyInfo propInfo) {
//    java.util.HashMap<String, TypeInfo> dic = new java.util.HashMap<String, TypeInfo>();
//    if (propInfo.getEnumValueInfos() != null && propInfo.getEnumValueInfos().size() > 0) {
//
//      propInfo.getEnumValueInfos().entrySet().stream().forEach(item -> {
//        dic.put(item.getKey(), new TypeInfo(item.getValue()));
//      });
//    }
//    return dic;
//  }
//
//  private java.util.HashMap<String, AbstractRefPropInfo> buildPropRefPropDic(
//      AbstractPropertyInfo propInfo) {
//    java.util.HashMap<String, AbstractRefPropInfo> dic = new java.util.HashMap<String, AbstractRefPropInfo>();
//    if (propInfo.getAssociationInfoType() != null) {
//
//      var assoInfo = (AssociationInfo) RepositoryGenUtil
//          .createInstanceByClass(propInfo.getAssociationInfoType());
//      if (assoInfo.getRefPropInfoTypes() != null && assoInfo.getRefPropInfoTypes().size() > 0) {
//        assoInfo.getRefPropInfoTypes().entrySet().stream().forEach(item -> {
//          dic.put(item.getKey(),
//              (AbstractRefPropInfo) RepositoryGenUtil.createInstanceByClass(item.getValue()));
//        });
//      }
//    }
//    return dic;
//  }
//
//  ///#endregion
//}